﻿using System;

namespace LwarnFile1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 1;
            int b;

            // a++ 先赋值再进行自增运算
            b = a++;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();

            // ++a 先进行自增运算再赋值
            a = 1; // 重新初始化 a
            b = ++a;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();

            // a-- 先赋值再进行自减运算
            a = 1;  // 重新初始化 a
            b = a--;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();

            // --a 先进行自减运算再赋值
            a = 1;  // 重新初始化 a
            b = --a;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();


            // 可用的逻辑运算符：
            bool c = true;
            bool d = true;

            if (c && d)
            {
                Console.WriteLine("Line 1 - 条件为真");
            }
            if (c || d)
            {
                Console.WriteLine("Line 2 - 条件为真");
            }
            /* 改变 a 和 b 的值 */
            c = false;
            d = true;
            if (c && d)
            {
                Console.WriteLine("Line 3 - 条件为真");
            }
            else
            {
                Console.WriteLine("Line 3 - 条件不为真");
            }
            if (!(c && c))
            {
                Console.WriteLine("Line 4 - 条件为真");
            }
            Console.ReadLine();


            //可用的位运算符：
            int e = 60;            /* 60 = 0011 1100 */
            int f = 13;            /* 13 = 0000 1101 */
            int g = 0;

            g = e & f;           /* 二进制 AND 运算符 12 = 0000 1100 */
            Console.WriteLine("Line 1 - c 的值是 {0}", g);

            g = e | f;           /* 二进制 OR 运算符 61 = 0011 1101 */
            Console.WriteLine("Line 2 - c 的值是 {0}", g);

            g = e ^ f;           /* 二进制异或运算符 49 = 0011 0001 */
            Console.WriteLine("Line 3 - c 的值是 {0}", g);

            g = ~e;               /* 按位取反运算符是一元运算符 -61 = 1100 0011 */
            Console.WriteLine("Line 4 - c 的值是 {0}", g);

            g = e << 2;     /* 二进制左移运算符 240 = 1111 0000 */
            Console.WriteLine("Line 5 - c 的值是 {0}", g);

            g = e >> 2;     /* 二进制右移运算符 15 = 0000 1111 */
            Console.WriteLine("Line 6 - c 的值是 {0}", g);
            Console.ReadLine();
        }
    }
}
